import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体（如果需要显示中文）
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 生成x轴数据
x = np.linspace(-5, 5, 200)

# ===================== Sigmoid =====================
plt.figure(figsize=(8, 5))
sigmoid = 1 / (1 + np.exp(-x))
plt.plot(x, sigmoid, color='blue', linewidth=2, label='Sigmoid: 1/(1+e^{-x})')
plt.title('Sigmoid函数', fontsize=14)
plt.xlabel('x', fontsize=12)
plt.ylabel('f(x)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.legend(loc='lower right', fontsize=10)
plt.xlim(-5, 5)
plt.ylim(-0.1, 1.1)
plt.tight_layout()

# ===================== Tanh =====================
plt.figure(figsize=(8, 5))
tanh = np.tanh(x)
plt.plot(x, tanh, color='red', linewidth=2, label='Tanh: (e^x - e^{-x})/(e^x + e^{-x})')
plt.title('Tanh函数', fontsize=14)
plt.xlabel('x', fontsize=12)
plt.ylabel('f(x)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.legend(loc='lower right', fontsize=10)
plt.xlim(-5, 5)
plt.ylim(-1.1, 1.1)
plt.tight_layout()

# ===================== ReLU =====================
plt.figure(figsize=(8, 5))
relu = np.maximum(0, x)
plt.plot(x, relu, color='green', linewidth=2, label='ReLU: max(0, x)')
plt.title('ReLU函数', fontsize=14)
plt.xlabel('x', fontsize=12)
plt.ylabel('f(x)', fontsize=12)
plt.grid(linestyle='--', alpha=0.7)
plt.legend(loc='upper left', fontsize=10)
plt.xlim(-5, 5)
plt.ylim(-0.5, 5.5)
plt.tight_layout()
 
# 显示所有图像
plt.show()